package com.itheima.mapper;

import com.itheima.pojo.Student;
import com.itheima.pojo.StudentQueryParam;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface StudentMapper {
    // 分页查询
    List<Student> list(StudentQueryParam studentQueryParam);

    // 批量删除学生
    // 注意: Bind Exception 这里不加 @Param()注解, JVM识别不了ids
    // 方式一: 使用@Param注解
//    void deleteByIds(@Param("ids") List<Integer> ids);

    // 方式二: 不使用@Param注解
    void deleteByIds( List<Integer> ids);

    // 新增学生
    void insert(Student student);

    // 根据ID查询学生
    Student getById(Integer id);

    // 修改学生信息
    void update(Student student);

    // 违纪处理
    void updateViolation(@Param("id") Integer id,@Param("score") Integer score);

    // 统计学生学历信息
    @MapKey("name")
    List<Map> countStudentDegreeData();

    // 统计班级人数
    @MapKey("cname")
    List<Map<String, Object>> getStudentCount();
}
